1985-BHV-12 S.10-11

Hilferuf!
Interrupt-Priority-Encoder und Vektorgenerator für IM2 mit dem Z80-CTC

Wer hat Erfahrung damit, wer kann mir helfen?

Seit nunmehr drei Jahren probiere ich mit verschiedenen Schaltungsvorschlägen zu dem Thema meinen GENIE 1 IM2-fähig zu machen. Das hätte den Vorteil, daß bei mehreren angeschlossenen Hardware-Erweiterungen, die über Interrupt von der CPU bedient werden, das Herumsuchen des Z80 nach dem Störenfried nicht mehr nötig ist, der Timer nicht mehr ruhig gehalten werden muß, wenn ein anderer INT-Lieferant aktiv ist, und ein echter Real-Time-Betrieb mit der Peripherie laufen kann.

Die geeignetste Methode scheint mir über den Z80-CTC zu laufen. Die Interrupt-Signale der verschiedenen Geräte gehen an je einen CTC Zählereingang. Das Zeitkonstanten-Register wird mit 1 geladen, so daß bei jedem Interrupt von außen dieser an die CPU weitergegeben wird. Gleichzeitig kann der CTC einen Vektor liefern und die verschiedenen Kanäle eines CTC sind in ihrer Priorität gestaffelt.

Durch Hintereinander-Schalten mehrerer CTCs in der IEI-IEO-Daisy-Chain lassen sich so biliebig viele Interrupt-Quellen anschließen. Außerdem ist solch ein Priority-Encoder sehr flexibel. Es läßt sich programmieren, ob positive oder negative Flanken gezählt werden sollen. Der IM2-Vektor läßt sich frei programmieren. Durch Umprogrammieren lassen sich einzelne Interrupt-Quellen abwürgen. Und last but not least läßt sich ein CTC-Kanal auch noch dafür verwenden, wofür er gedacht ist.

Ich habe mir ein Board auf Lochraster-Platine aufgebaut und versuchsweise den Timer-Interrupt an den Zählereingang des CTC gelegt und zwischen Timer und CPU-INT-Eingang einen Soft-Ein/Aus-Schalter gelegt. Der Soft-Schalter funktioniert auch so wie geplant.

Offensichtlich bin ich aber in Software-Entwicklung zu unterbelichtet, um dem CTC in geeigneter Weise mitzuteilen, was ich von ihm erwarte. Auch der sehr informative Artikel in der c't 4/85, S.92, der mit 3 Worten diese Nutzung des CTC erwähnt, konnte nicht dazu beitragen, diesen Mißstand bei mir zu ändern.

Wer hat auf diesem Gebiet schon mal experimentiert? Wer kann mir sagen, wie ich den CTC zu behandeln habe, um mein Ziel doch noch zu erreichen? Oder habe ich einen Hardware-Fehler eingebaut?

Helmut Bernhardt